package net.maku.express.biza.service.packagecollect.impl;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import net.maku.commons.biza.handle.CreateSysNOHandler;
import net.maku.commons.biza.util.BarcodeUtil;
import net.maku.custom.biza.mapper.customers.CustomerInfoDao;
import net.maku.custom.biza.pojo.customs.CustomerInfoEntity;
import net.maku.express.biza.controller.collectExpress.vo.CollectExpressSelectiveVO;
import net.maku.express.biza.controller.orderlist.vo.ChargeAddRequestVO;
import net.maku.express.biza.controller.orderlist.vo.OrderListAddAnnexRequestVO;
import net.maku.express.biza.controller.orderlist.vo.OrderListVO;
import net.maku.express.biza.controller.packagecollect.vo.*;
import net.maku.express.biza.convert.PackageCollectConvert;
import net.maku.express.biza.mapper.collectexpress.CollectExpressMapper;
import net.maku.express.biza.mapper.collectexpress.CollectExpressSmallMapper;
import net.maku.express.biza.mapper.orderlist.LogisticsOrderMainMapper;
import net.maku.express.biza.mapper.orderlist.OrderListMapper;
import net.maku.express.biza.mapper.packagecollect.PackageCollectMapper;
import net.maku.express.biza.pojo.collectexpress.CollectExpressPojo;
import net.maku.express.biza.pojo.collectexpress.CollectExpressSmallPojo;
import net.maku.express.biza.pojo.enums.PackHourseEnum;
import net.maku.express.biza.pojo.enums.PackStateEnum;
import net.maku.express.biza.pojo.orderlist.LogisticsOrderMainPojo;
import net.maku.express.biza.pojo.orderlist.OrderListPojo;
import net.maku.express.biza.pojo.packagecollect.PackageCollectPojo;
import net.maku.express.biza.service.orderlist.OrderListService;
import net.maku.express.biza.service.packagecollect.PackageCollectService;
import net.maku.express.biza.vo.PackageCollectVO;
import net.maku.framework.common.exception.ErrorCode;
import net.maku.framework.common.service.impl.BaseServiceImpl;
import net.maku.framework.common.utils.Result;
import net.maku.framework.security.user.SecurityUser;
import net.maku.framework.security.user.UserDetail;
import net.maku.infra.api.service.FileApiService;
import net.maku.system.enums.SuperAdminEnum;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @Author wenyignying'
 * @Description:散件合包
 * @Date
 */
@Service
public class PackageCollectServiceImpl extends BaseServiceImpl<PackageCollectMapper, PackageCollectPojo>
        implements PackageCollectService  {

    @Autowired
    PackageCollectMapper packageCollectMapper;
    @Autowired
    CollectExpressMapper collectExpressMapper;
    @Autowired
    CollectExpressSmallMapper collectExpressSmallMapper;
    @Autowired
    private CreateSysNOHandler createSysNOHandler;
    @Autowired
    private OrderListMapper orderListMapper;
    @Autowired
    private FileApiService fileApiService;
    @Autowired
    private OrderListService orderListService;
    @Autowired
    protected LogisticsOrderMainMapper logisticsOrderMainMapper;
    @Autowired
    protected CustomerInfoDao customerInfoDao;

    /**
     * 查询
     *
     * @return
     */
    @Override
    public Result<Page<PackageCollectPageVO>> select(PackageCollectSelectRequestVO packageCollectRequestVO) {
        Page<PackageCollectPageVO> page = PageDTO
                .of(packageCollectRequestVO.getPage(), packageCollectRequestVO.getPageSize());
        page = packageCollectMapper.selectData(page, packageCollectRequestVO, SecurityUser.getUser().getOrgId());
        return Result.ok(page);
    }

    @Override
    public Result<List<PackageCollectPageVO>> select1(
            PackageCollectSelectAddRequestVO packageCollectRequestVO) {
        packageCollectRequestVO.setBoxState(2);
        return Result.ok(packageCollectMapper.selectData1(packageCollectRequestVO, SecurityUser.getUser().getOrgId()));
    }

    /**
     * 添加数据
     *
     * @param packageCollectVO
     * @return
     */
//    @Override
//    public Result<Integer> addData(PackageCollectAddRequestVO packageCollectVO) {
//        if (packageCollectVO.getList() == null || packageCollectVO.getList().size() == 0) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "揽件包不能为空");
//        }
//        PackageCollectPojo packageCollectPojo = Convert.convert(PackageCollectPojo.class, packageCollectVO);
//        List<Map<String, Object>> list = collectExpressSmallMapper.selectIds(packageCollectVO.getList());
//        if (list == null || list.size() == 0) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "货物被删除！");
//        }
//        Map<String, Object> map1 = list.get(0);
//        int originId = new Integer(map1.get("origin_id").toString());
//        int destId = new Integer(map1.get("dest_id").toString());
//        int hourseOrigin = new Integer(map1.get("goods_hourse_origin").toString());
//        int hourseDest = new Integer(map1.get("goods_hourse_dest").toString());
//        String sysNo = createSysNOHandler.createSysNo(3, null);
//        for (Map<String, Object> map : list) {
//            if (map.get("package_collect_id") != null && new Integer(map.get("package_collect_id").toString()) != 0) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "货物已合包！");
//            }
//            if (originId != new Integer(map.get("origin_id").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地港口不同！");
//            }
//            if (destId != new Integer(map.get("dest_id").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地港口不同！");
//            }
//            if (hourseOrigin != new Integer(map.get("goods_hourse_origin").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地仓库不同！");
//            }
//            if (hourseDest != new Integer(map.get("goods_hourse_dest").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地仓库不同！");
//            }
//        }
//        packageCollectPojo.setBoxNo(sysNo);
//        packageCollectPojo.setCreateTime(DateUtil.date());
//        byte[] dataByte = BarcodeUtil.generateBarEAN13(sysNo, null, null, null, true, 3.0);
//        String url = fileApiService.getBarUrl(sysNo + ".png", null, dataByte, "bar", false);
//        packageCollectPojo.setBarAnnex(url);
//        packageCollectPojo.setOrgId(SecurityUser.getUserId());
//        packageCollectMapper.insertSelective(packageCollectPojo);
//        collectExpressSmallMapper.updatePackageCollectIdById(packageCollectPojo.getId(), packageCollectVO.getList(), 2);
//        return Result.ok();
//    }

    /**
     * 添加合包数据
     *
     * @param packageCollectVO
     * @return
     */
    @Override
    public Result<String> addData(PackageCollectVO packageCollectVO) {
        if (packageCollectVO.getCollectExpressIdlist() == null || packageCollectVO.getCollectExpressIdlist().size() == 0) {
            return Result.error(ErrorCode.NOEMPTY.getCode(), "揽件包不能为空");
        }
        PackageCollectPojo packageCollectPojo = PackageCollectConvert.INSTANCE.convert(packageCollectVO);

        //以下注释代码为之前的逻辑代码，现在目的地和业务类型的校验在前端做
//        List<Map<String, Object>> list = collectExpressSmallMapper.selectIds(packageCollectVO.getList());
//        if (list == null || list.size() == 0) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "货物被删除！");
//        }
//        Map<String, Object> map1 = list.get(0);
//        int originId = new Integer(map1.get("origin_id").toString());
//        int destId = new Integer(map1.get("dest_id").toString());
//        int hourseOrigin = new Integer(map1.get("goods_hourse_origin").toString());
//        int hourseDest = new Integer(map1.get("goods_hourse_dest").toString());
//        for (Map<String, Object> map : list) {
//            if (map.get("package_collect_id") != null && new Integer(map.get("package_collect_id").toString()) != 0) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "货物已合包！");
//            }
//            if (originId != new Integer(map.get("origin_id").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地港口不同！");
//            }
//            if (destId != new Integer(map.get("dest_id").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地港口不同！");
//            }
//            if (hourseOrigin != new Integer(map.get("goods_hourse_origin").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地仓库不同！");
//            }
//            if (hourseDest != new Integer(map.get("goods_hourse_dest").toString()).intValue()) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地仓库不同！");
//            }
//        }
        //生成箱号
        String sysNo = createSysNOHandler.createSysNo(3, null);
        packageCollectPojo.setBoxNo(sysNo);
        packageCollectPojo.setCreateTime(DateUtil.date());

        //生成条形码
//        byte[] dataByte = BarcodeUtil.generateBarEAN13(sysNo, null, null, null, true, 3.0);
//        String url = fileApiService.getBarUrl(sysNo + ".png", null, dataByte, "bar", false);
//        packageCollectPojo.setBarAnnex(url);
        //设置出仓状态
        packageCollectPojo.setChuCangState(0);
        //目前不需要机构了
//        packageCollectPojo.setOrgId(SecurityUser.getUserId());
        int num = baseMapper.insert(packageCollectPojo);

        if(num <= 0){
            return Result.error(ErrorCode.INTERNAL_SERVER_ERROR);
        }

        List<Long> expressSmallIdList = packageCollectVO.getCollectExpressIdlist();

        if(CollectionUtils.isNotEmpty(expressSmallIdList)){
            for(Long expressSmallId : expressSmallIdList){
                CollectExpressSmallPojo expressSmallPojo = collectExpressSmallMapper.selectById(expressSmallId);
                //设置为已装箱
                expressSmallPojo.setCollectState(2);
                expressSmallPojo.setPackageCollectId(packageCollectPojo.getId());
                collectExpressSmallMapper.updateById(expressSmallPojo);

                //修改打包状态
                CollectExpressPojo expressPojo = collectExpressMapper.selectById(expressSmallPojo.getCollectExpressId());
                LambdaQueryWrapper<CollectExpressSmallPojo> expressSmallQuery = new LambdaQueryWrapper<>();
                expressSmallQuery.eq(CollectExpressSmallPojo::getCollectExpressId, expressPojo.getId());

                List<CollectExpressSmallPojo> expressSmallPojoList = collectExpressSmallMapper.selectList(expressSmallQuery);
                //已装箱的列表
                List<CollectExpressSmallPojo> packedExpressSmallList = new ArrayList<>();
                for(CollectExpressSmallPojo smallPojo : expressSmallPojoList){
                    if(2 <= smallPojo.getCollectState()){
                        packedExpressSmallList.add(smallPojo);
                    }
                }
                //如果货物都装箱了，收据单打包状态改为全部打包
                if(expressSmallPojoList.size() == packedExpressSmallList.size()){
                    //全部打包
                    expressPojo.setPackState(3);
                }else{
                    expressPojo.setPackState(2);
                }
                collectExpressMapper.updateById(expressPojo);
            }
        }

        //设置具体货物的状态为已装箱
//        collectExpressSmallMapper.updatePackageCollectIdById(packageCollectPojo.getId(), expressSmallIdList, 2);
        return Result.ok();
    }

    /**
     * 拆箱
     *
     * @return
     */
    @Override
    public Result<Integer> deleteData(Long id) {
        PackageCollectPojo p = packageCollectMapper.selectById(id);
        if (p == null) {
            return Result.error(ErrorCode.NOEMPTY.getCode(), "数据不存在!");
        }
        if (p.getPackHourseState() == 2) {
            return Result.error(ErrorCode.NOEMPTY.getCode(), "已出仓不能删除!");
        }
        int num = packageCollectMapper.deleteById(id);
        if (num > 0) {
            collectExpressMapper.updatePackageCollectIdAndCollectStateByPackageCollectId(0L, 0, id);
            collectExpressSmallMapper.updatePackageCollectIdByPackageCollectId(0, id);
        }
        return Result.ok();
    }

    /**
     * 更新数据
     *
     * @param packageCollectVO
     * @return
     */
//    @Override
//    public Result<Integer> updateData(PackageCollectAddRequestVO packageCollectVO) {
//        PackageCollectPojo packageCollectPojo = packageCollectMapper.selectById(packageCollectVO.getId());
//        if (packageCollectPojo == null) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "数据被删除！");
//        }
//        if (packageCollectPojo.getBoxState() == 2) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "数据已装箱不能修改！");
//        }
//        if (packageCollectVO.getId() == null) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "id不能为空！");
//        }
//        List<Map<String, Object>> list = collectExpressSmallMapper.selectIds(packageCollectVO.getList());
//        if (list == null || list.size() == 0) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), "货物被删除！");
//        }
//        Map<String, Object> map1 = list.get(0);
//        Integer originId = new Integer(map1.get("origin_id").toString());
//        Integer destId = new Integer(map1.get("origin_id").toString());
//        Integer hourseOrigin = new Integer(map1.get("goods_hourse_origin").toString());
//        Integer hourseDest = new Integer(map1.get("goods_hourse_dest").toString());
//
//        for (Map<String, Object> map : list) {
//            if (map.get("package_collect_id") != null && new Integer(map.get("package_collect_id").toString()) != 0) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "货物已合包！");
//            }
//            if (originId != new Integer(map.get("origin_id").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地港口不同！");
//            }
//            if (destId != new Integer(map.get("dest_id").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地港口不同！");
//            }
//            if (hourseOrigin != new Integer(map.get("goods_hourse_origin").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "始发地仓库不同！");
//            }
//            if (hourseDest != new Integer(map.get("goods_hourse_dest").toString())) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), map.get("collect_no") + "目的地仓库不同！");
//            }
//        }
//
//        PackageCollectPojo packageCollectPojo1 = Convert.convert(PackageCollectPojo.class, packageCollectVO);
//        int num = packageCollectMapper.updateSelective(packageCollectPojo1);
//        if (num > 0) {
//            collectExpressSmallMapper.updatePackageCollectIdByPackageCollectId(0, packageCollectVO.getId());
//            collectExpressSmallMapper.updatePackageCollectIdById(packageCollectPojo1.getId(), packageCollectVO.getList(), 2);
//        }
//        return Result.ok();
//    }

    /**
     * 更新合包数据
     * @param packageCollectVO
     * @return
     */
    @Override
    public Result<Integer> updateData(PackageCollectVO packageCollectVO) {
        PackageCollectPojo packageCollectPojo = PackageCollectConvert.INSTANCE.convert(packageCollectVO);
        //更新入库信息
        boolean sqlResult = updateById(packageCollectPojo);
        if(false == sqlResult){
            return Result.error("更新失败");
        }
        return Result.ok();
    }

    @Override
    public Result<String> getBoxNO() {
        String sysNo = createSysNOHandler.createSysNo(3, null);
        return Result.ok(sysNo);
    }


    @Override
    public Result<Integer> updateBoxState(PackageCollectStatusRequestVO statusRequestVO) {
        if (CollectionUtils.isEmpty(statusRequestVO.getId())) {
            return Result.error("id的数据不能为空");
        }
        if (!PackStateEnum.getCodeFlag(statusRequestVO.getStatus())) {
            return Result.error("箱状态不正确");
        }
        List<PackageCollectPojo> list = packageCollectMapper.selectByIds(statusRequestVO.getId());
        if (CollectionUtils.isEmpty(list)) {
            return Result.error(ErrorCode.NOEMPTY.getCode(), "数据不存在!");
        }
        for (PackageCollectPojo p : list) {
            if (p.getPackHourseState() == PackHourseEnum.YES.getCode() && statusRequestVO.getStatus() == PackStateEnum.NO
                    .getCode()) {
                return Result.error(p.getBoxNo() + "，该箱子已装箱不能拆箱!");

            }
        }
        packageCollectMapper.updateBoxStateById(statusRequestVO.getStatus(), statusRequestVO.getId());
        return Result.ok();
    }

    @Override
    public Result<List<CollectExpressSelectiveVO>> updateOutboundStateByIds(List<Long> id) {
        List<PackageCollectPojo> pkgDataList = packageCollectMapper.selectByIds(id);
        String boxNo;
        for (PackageCollectPojo pkg : pkgDataList) {
            boxNo = pkg.getBoxNo();
//            if (pkg.getBoxState() == 1) {
//                return Result.error(ErrorCode.NOEMPTY.getCode(), boxNo + "未装箱!");
//            }
            if (pkg.getPackHourseState() == 2) {
                return Result.error(ErrorCode.NOEMPTY.getCode(), boxNo + "已出仓!");
            }
        }
        List<CollectExpressSelectiveVO> list2 = collectExpressMapper.selective2(id);
        if (list2 == null || list2.size() == 0) {
            return Result.error(ErrorCode.NOEMPTY.getCode(), "数据不存在!");
        }
        if (list2.size() > 1) {
            for (int i = 0; i < list2.size(); i++) {
                if (list2.get(i).getCustomId() != list2.get(i + 1).getCustomId()) {
                    return Result.error(ErrorCode.NOEMPTY.getCode(), "请选择相同客户!");
                }
                if (list2.get(i).getOperateId().longValue() != list2.get(i + 1).getOperateId().longValue()) {
                    return Result.error(ErrorCode.NOEMPTY.getCode(), "请选择相同错操作员!");
                }
                if (list2.get(i).getSalesId().longValue() != list2.get(i + 1).getSalesId().longValue()) {
                    return Result.error(ErrorCode.NOEMPTY.getCode(), "请选择相同销售!");
                }
                if (list2.get(i).getOriginId().longValue() != list2.get(i + 1).getOriginId().longValue()) {
                    return Result.error(ErrorCode.NOEMPTY.getCode(), "请选择相同始发地!");
                }
                if (list2.get(i).getDestId() != list2.get(i + 1).getDestId()) {
                    return Result.error(ErrorCode.NOEMPTY.getCode(), "请选择相同目的地!");
                }

                //出仓按钮生成订单
                int finalI = i;
                orderListService.add(new OrderListVO() {{
                    this.setOriginId(list2.get(finalI).getOriginId());
                    this.setDestId(list2.get(finalI).getDestId());
                    this.setCustomerId(list2.get(finalI).getCustomId());
                    this.setSalesId(list2.get(finalI).getSalesId());
                    this.setOrderOrigin(list2.get(finalI).getOriginHorse());
                    this.setEnterHourse(list2.get(finalI).getDestHorse());
                    this.setExpressNum(list2.size());
                    this.setDeliveryDate(list2.get(finalI).getCollectTime());
                    this.setWeight(pkgDataList.get(0).getExpressWeight());
                    this.setChars(new ArrayList<ChargeAddRequestVO>() {{
                        for (PackageCollectPojo packageCollectPojo : pkgDataList) {
                            this.add(new ChargeAddRequestVO() {{
                                this.setCoinType(1);
                                this.setPayorId(list2.get(finalI).getCustomId());
                                this.setNumber(packageCollectPojo.getBoxNum());
                                this.setRemark(packageCollectPojo.getRemark());
                                this.setCollectType(list2.get(finalI).getBusinessState());
                            }});
                        }
                    }});
                    this.setAnnexs(new ArrayList<OrderListAddAnnexRequestVO>() {{
                        this.add(new OrderListAddAnnexRequestVO() {{
                            this.setType(1);
                            this.setAnnex(list2.get(finalI).getBarAnnex());
                        }});
                    }});
                    this.setCollectIds(id);
                }});
            }
            return Result.ok(list2);
        }
        //出仓按钮生成订单
        orderListService.add(new OrderListVO() {{
            this.setOriginId(list2.get(0).getOriginId());
            this.setDestId(list2.get(0).getDestId());
            this.setCustomerId(list2.get(0).getCustomId());
            this.setSalesId(list2.get(0).getSalesId());
            this.setOrderOrigin(list2.get(0).getOriginHorse());
            this.setEnterHourse(list2.get(0).getDestHorse());
            this.setExpressNum(list2.size());
            this.setDeliveryDate(list2.get(0).getCollectTime());
            this.setWeight(pkgDataList.get(0).getExpressWeight());
            this.setChars(new ArrayList<ChargeAddRequestVO>() {{
                for (PackageCollectPojo packageCollectPojo : pkgDataList) {
                    this.add(new ChargeAddRequestVO() {{
                        this.setCoinType(1);
                        this.setPayorId(list2.get(0).getCustomId());
                        this.setNumber(packageCollectPojo.getBoxNum());
                        this.setRemark(packageCollectPojo.getRemark());
                        this.setCollectType(list2.get(0).getBusinessState());
                    }});
                }
            }});
            this.setAnnexs(new ArrayList<OrderListAddAnnexRequestVO>() {{
                this.add(new OrderListAddAnnexRequestVO() {{
                    this.setType(1);
                    this.setAnnex(list2.get(0).getBarAnnex());
                }});
            }});
            this.setCollectIds(id);
        }});
        return Result.ok(list2);
    }

    /**
     * 散件合包详情
     * @param id
     * @return
     */
    @Override
    public Result<PackageCollectVO> selectOne(Long id) {
        PackageCollectPojo packageCollectPojo = this.getById(id);
        PackageCollectVO packageCollectVO = PackageCollectConvert.INSTANCE.convert(packageCollectPojo);
//        PackageCollectPojo p = packageCollectMapper.selectById(id);
//        if (p == null) {
//            return Result.error(ErrorCode.NOEMPTY.getCode(), p.getBoxNo() + "数据为空!");
//        }
//        PackageCollectUpdateRequestVO po = Convert.convert(PackageCollectUpdateRequestVO.class, p);
        return Result.ok(packageCollectVO);
    }

    @Override
    public Result<List<PackageCollectOrderVO>> selectOrder(Long id) {
        OrderListPojo orderListPojo = orderListMapper.selectById(id);
        String orderNo = orderListPojo.getOrderNo();
        List<Long> list = collectExpressMapper.selectCollectNoByOrdersNo(orderNo);
        List<PackageCollectOrderVO> list1 = collectExpressSmallMapper.selectByCollectExpressId2(list);

        return Result.ok(list1);
    }

    @Override
    public Result<PackageCollectPageVO> selectPrintData(Long id) {
        PackageCollectPageVO data = packageCollectMapper.selectPrintData(id);
        if (data == null) {
            return Result.error("改数据已删除");
        }
        return Result.ok(data);
    }

    /**
     * 出仓（生成订单信息）
     * @param idList
     * @return
     */
    @Override
    public Result<Integer> outWarehouse(List<Long> idList) {
        if(CollectionUtils.isEmpty(idList)){
            return Result.error(ErrorCode.NOEMPTY.getCode(), "没有合包id");
        }
        OrderListPojo order = new OrderListPojo();
        order.setOrderNo(createSysNOHandler.createSysNo(4, null));
        order.setExpressNum(idList.size());
        int num = orderListMapper.insert(order);
        if(num > 0){
            //更新合包记录的订单字段
            packageCollectMapper.updateForChuCang(order.getId(), idList);
        }

        for(Long packageCollectId : idList){
            LambdaQueryWrapper<CollectExpressSmallPojo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
            lambdaQueryWrapper.eq(CollectExpressSmallPojo::getPackageCollectId, packageCollectId);
            List<CollectExpressSmallPojo> collectExpressSmallPojoList = collectExpressSmallMapper.selectList(lambdaQueryWrapper);
            if(CollectionUtils.isNotEmpty(collectExpressSmallPojoList)){
                for(CollectExpressSmallPojo collectExpressSmallPojo : collectExpressSmallPojoList){
                    //更新货物信息表的订单字段
                    CollectExpressSmallPojo updateSmallPojo = new CollectExpressSmallPojo();
                    updateSmallPojo.setId(collectExpressSmallPojo.getId());
                    updateSmallPojo.setLogisticsOrderId(order.getId());
                    collectExpressSmallMapper.updateById(updateSmallPojo);
                }
            }
        }


//        for(Long packageCollectId : idList){
//            LambdaQueryWrapper<CollectExpressSmallPojo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//            lambdaQueryWrapper.eq(CollectExpressSmallPojo::getPackageCollectId, packageCollectId);
//            List<CollectExpressSmallPojo> collectExpressSmallPojoList = collectExpressSmallMapper.selectList(lambdaQueryWrapper);
//            if(CollectionUtils.isNotEmpty(collectExpressSmallPojoList)){
//                for(CollectExpressSmallPojo collectExpressSmallPojo : collectExpressSmallPojoList){
//                    //更新货物信息表的订单字段
//                    CollectExpressSmallPojo updateSmallPojo = new CollectExpressSmallPojo();
//                    updateSmallPojo.setId(collectExpressSmallPojo.getId());
//                    updateSmallPojo.setLogisticsOrderId(logisticsOrderMain.getId());
//                    collectExpressSmallMapper.updateById(updateSmallPojo);
//                    //插入数据到订单列表
//                    OrderListPojo order = new OrderListPojo();
//                    //设置订单号
//                    order.setOrderNo(logisticsOrderMain.getOrderNo());
//
//                    CollectExpressPojo express = collectExpressMapper.selectById(collectExpressSmallPojo.getCollectExpressId());
//                    if(Objects.nonNull(express)){
//                        //设置客户
//                        CustomerInfoEntity customerInfo = customerInfoDao.selectById(express.getCustomId());
//                        if(Objects.nonNull(customerInfo)){
//                            order.setCustomerName(customerInfo.getName());
//                            order.setCustomerId(customerInfo.getId());
//                        }
//                        //设置始发地国家
//                        order.setOriginCountry(express.getOriginCountry());
//                        //设置目的地国家
//                        order.setDestinationCountry(express.getDestinationCountry());
//                    }
//                    orderListMapper.insert(order);
//                }
//            }
//        }


        return Result.ok();
    }

}
